#pragma once 

//namespace my {


	template <class K, class V>
	class Pair {

	public:
		K first;
		V second;

		Pair() : first(), second() {}
		Pair(const K& key, const V& value) :first(key), second(value) {}
		Pair(const Pair<K, V>& other) : first(other.first), second(other.second) {} // user-defined copy ctor
		~Pair() {}

		Pair<K,V>& operator=(const Pair& other) {
			first = other.first;
			second = other.second;
			return *this;
		}

		bool operator==(const Pair<K, V>& other)
		{
			return first == other.first && second == other.second;
		}

		bool operator!=(const Pair<K, V>& other)
		{
			return !(*this == other);
		}

		//bool operator==(const Pair<K, V>& lhs, const Pair<K, V>& rhs)
		//{
		//	return lhs.first == rhs.first && lhs.second == rhs.second;
		//}

		//void setValue(V* pValue) {
		//	second = pValue;
		//}

		//const K* getKey() const {
		//	return first;
		//}

		//V* getValue() const {
		//	return second;
		//}



	}; // class

//} // namespace

